package com.fansl.allround.oss.controller;

import com.fansl.allround.common.core.util.R;
import com.fansl.allround.oss.service.QiniuOssService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

/**
 * @author fansl
 * @Description: 七牛云oss
 * @date 2019/9/2 17:18
 */
@RestController
@Slf4j
@RequestMapping("/qiniu/oss")
@AllArgsConstructor
public class QiniuOssController {
    private final QiniuOssService qiniuOssService;

    /**
     * 获取上传凭证
     * @param key 文件名称(客户端上传代码中指定的文件名，两者必须一致)
     * @return
     */
    @GetMapping("/token")
    public R getUploadToken(@RequestParam(required = false) String key){
        return new R(qiniuOssService.getUploadToken(key));
    }

    /**
     * 上传文件
     * @param file
     * @return
     */
    @PostMapping("/upload")
    public R uploadFile(@RequestParam MultipartFile file){
        return new R(qiniuOssService.uploadFile(file));
    }

    /**
     * 获取下载的文件地址
     * @param isPrivate 是否是私有空间
     * @param key 文件key
     * @return
     */
    @PostMapping("/downloadUrl")
    public String getDownloadUrl(@RequestParam Boolean isPrivate,
                                 @RequestParam String key){
        return qiniuOssService.getDownloadUrl(key,isPrivate);
    }

    /**
     * 获取下载的文件地址
     * @param isPrivate 是否是私有空间
     * @param keys 文件key
     * @return
     */
    @PostMapping("/list/downloadUrl")
    public Map<String,String> getDownloadUrl(@RequestParam Boolean isPrivate,
                                             @RequestBody List<String> keys){
        return qiniuOssService.getDownloadUrlList(keys,isPrivate);
    }
    /**
     * 上传成功回调方法
     * @param callbackBody
     * @return
     */
    @PostMapping("/callback")
    @ResponseBody
    public R callback(@RequestBody Object callbackBody) {
        return new R(callbackBody);
    }
}
